/**
 * @description 定义数据管理器的state、getters、mutations、actions、modules配置
 */
// 进行vuex插件注册
import Vue from 'vue'
import Vuex from 'vuex'
// 引入vuex缓存插件
import persistedState from 'vuex-persistedstate'

// 引入模块
import common from './common'
import cartModule from './cart'

Vue.use(Vuex)

// 实例化 -- 因为是模块化管理，所以每一个模块应该是一个独立的模块（每一个模块应该是一个文件）
const store = new Vuex.Store({
  // 添加vuex数据持久化库插件
  plugins: [
    // 注册插件
    // 我们的数据都是用户登录以后才有的数据，应该为一个会话数据，所以应该存在sessionStorage中
    persistedState({
      // 指定存储数据的位置
      storage: window.sessionStorage
    })
  ],
  // 定义模块
  modules: {
    common,
    cartModule
  }
})

export default store
